/*
 * ----------------------------------------------------------------------------
 *  (C) Copyright European Telecommunications Standards Institute, 2001.
 *  All Rights Reserved.
 *
 *  All copies of this program, whether in whole or in part, and whether
 *  modified or not, must display this and all other embedded copyright
 *  and ownership notices in full.
 *
 * ----------------------------------------------------------------------------
 */
package org.etsi.ttcn.tri;

import java.io.Serializable;

/**
   A value of type TriComponentIdType includes an identifier and the
   component type. The distinct value of the latter is the component
   type name as specified in the TTCN-3 ATS. This abstract type is
   mainly used to resolve TRI communication operations on TSI ports
   which have mappings to many test component ports.
 */
public interface TriComponentId extends Serializable {

    /** Returns a representation of this unique component identifier.
     */
    public String        getComponentId();
    
    //type component MyComponent {...}
    //var MyComponent cmp1;
	/**
	 * Returns the name of the component.
	 */
	public String getComponentName();	//comp1

    /** Returns the component type name as defined in the TTCN-3
	specification.
    */
    public String        getComponentTypeName();//MyComponent

    /** Returns the component's port list as defined in the TTCN-3
	specification.
    */
    public TriPortIdList getPortList();

    /** Compares component with this TriComponentId for
	equality. Returns true if and only if both components have the
	same representation of this unique component identifier, false
	otherwise.
    */
    public boolean       equals(TriComponentId component);

}
